package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseModifyDetail;
import com.softer.wxzj.entity.BaseOwnerCommittee;
import com.softer.wxzj.entity.BaseRegionInfo;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * BaseOwnerCommitteeMapper class
 *
 * @author WXR
 * @date 2019/4/29
 */
@Repository
public interface BaseOwnerCommitteeMapper extends BaseMapper<BaseOwnerCommittee> {
    /**
     * 增加返回id
     *
     * @param baseOwnerCommittee
     * @return
     */
    int insertForId(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 查询变更详情
     *
     * @return
     */
    List<BaseModifyDetail> getModifyDetailList(BaseModifyDetail baseModifyDetail);

    /**
     * 备案
     *
     * @param baseOwnerCommittee
     * @return
     */
    int record(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 查询有没有小区存在（添加时判断是否已经存在业委会居委会）
     *
     * @param orgTypeCode 企业信息
     * @param regionNo    小区名称
     * @return
     */
    int selectRegionNo(@Param("orgTypeCode") String orgTypeCode, @Param("regionNo") String regionNo);

    List<BaseOwnerCommittee> getToList(BaseOwnerCommittee baseOwnerCommittee, String flowState);

    /**
     * 查询该类型的最大值
     *
     * @param orgTypeCode
     * @return
     */
    String selectMaxRegCode(String orgTypeCode);

    BaseOwnerCommittee findByName(@Param("name") String operName, @Param("orgTypeCode") String orgTypeCode);

    BaseOwnerCommittee findByNo(@Param("operName") String operName);

    /**
     * 根据ids查询企业名拼接成一个字符串
     *
     * @param ids
     * @return
     */
    String getConcatOwnerCommitteeNameByIds(String ids);

    /**
     * 通过查询
     *
     * @param orgCode
     * @return
     */
    List<BaseOwnerCommittee> getListByOrg(String orgCode);

    int updateFlowStateById(@Param("id") String id, @Param("initState") String initState);

    /**
     * 审核列表
     *
     * @param baseOwnerCommittee
     * @return
     */
    List<BaseOwnerCommittee> getListSubmit(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 查询小区的业委会居委會
     *
     * @param id
     * @param type
     * @return
     */
    String selectNameById(@Param("id") String id, @Param("type") String type);

    /**
     * 查询小区
     *
     * @param operNo
     * @return
     */
    List<BaseRegionInfo> selectRegionNoByOperNo(String operNo);

    /**
     * 外网获取变更信息列表
     *
     * @param baseOwnerCommittee 查询信息
     * @return 业委会变更列表
     */
    List<BaseOwnerCommittee> getModifyListToExtraNet(BaseOwnerCommittee baseOwnerCommittee);

    /**
     * 校验小区是否存在业委会或者居委会
     *
     * @param regionId 小区ID
     * @return true/false
     */
    BaseOwnerCommittee checkRegion(String regionId);

    /**
     * 查询业委会/居委会的小区列表
     *
     * @param baseRegionInfo 查询实体
     * @return 小区列表
     */
    List<BaseRegionInfo> getOrgRegionList(BaseRegionInfo baseRegionInfo);

    /**
     * 根据登录账号，查询业委会或者居委会管理的小区
     *
     * @param operNo 登录账号
     * @return 管理的小区
     */
    String getRegionId(String operNo);
    /**
     * 外网查询业委会/居委会管理的小区
     *
     * @param operNo 登录账号
     * @return 小区列表
     */
    List<BaseRegionInfo> getCommitteeRegionList(String operNo);
}
